package com.bee.base.service;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.bee.base.entity.Page;

public interface BaseService<T> {

	/**
	 * 新增实例
	 * 
	 * @param entity
	 * @return
	 */
	public Serializable save(T entity);

	/**
	 * 批量新增实例
	 * 
	 * @param entities
	 */
	public void saveAll(Collection<T> entities);

	/**
	 * 通过主键查询
	 * 
	 * @param sid
	 * @return
	 */
	public T get(Long sid);

	/**
	 * 通过queryString查询
	 * 
	 * @param queryString
	 * @return
	 */
	public List<T> find(String queryString, Object... values);

	/**
	 * 通过Example查询
	 * 
	 * @param entity
	 * @return
	 */
	public List<T> find(T entity);

	/**
	 * 通过Criteria查询
	 * 
	 * @param params
	 * @return
	 */
	public List<T> find(Map<String, String> params);

	/**
	 * 查询所有实例
	 * 
	 * @return
	 */
	public List<T> findAll();

	/**
	 * 修改实例
	 * 
	 * @param entity
	 */
	public void update(T entity);

	/**
	 * 批量修改实例
	 * 
	 * @param entities
	 */
	public void updateAll(Collection<T> entities);

	/**
	 * 删除实例
	 * 
	 * @param entity
	 */
	public void delete(T entity);

	/**
	 * 通过主键删除实例
	 * 
	 * @param sid
	 */
	public void delete(Long sid);

	/**
	 * 批量删除实例
	 * 
	 * @param entities
	 */
	public void deleteAll(Collection<T> entities);

	/**
	 * 通过queryString分页
	 * 
	 * @param queryString
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page page(String queryString, int pageNo, int pageSize);

	/**
	 * 通过params分页
	 * 
	 * @param params
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page page(Map<String, String> params, int pageNo, int pageSize);

}
